package www.worq.model.dao;

import java.sql.SQLException;
import java.util.ArrayList;

import www.worq.controller.beans.encargado_oficinaBean;
import www.worq.controller.beans.oficinaBean;

public class oficinasDao extends oreqDao {

	public ArrayList<oficinaBean> getOFICINAS() throws SQLException {
		ArrayList<oficinaBean> cat_oficinas = new ArrayList<oficinaBean>();
		try {
			StringBuilder query = new StringBuilder();
			query.append("Select * from oficina");
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			System.out.println("dao.oficinas.getOFICINAS.Ejecutado----------> "
					+ query.toString());

			while (rs.next()) {
				oficinaBean oficina = new oficinaBean();
				oficina.setId_oficina(rs.getInt(1));
				oficina.setNombre(rs.getString(2));
				oficina.setEmail(rs.getString(3));
				oficina.setDireccion(rs.getString(4));
				oficina.setHorarios(rs.getString(5));
				cat_oficinas.add(oficina);
			}
			System.out.println("dao.oficinas.getOFICINAS----------> Cargado");
		} catch (Exception e) {
			System.out.println("oficinasDao...Error..." + e.getMessage());
		} finally {
			close(conn);
			close(ps);
			close(rs);
		}
		return cat_oficinas;
	}

	public ArrayList<encargado_oficinaBean> getENCARGADOS() throws SQLException {
		ArrayList<encargado_oficinaBean> cat_encargados = new ArrayList<encargado_oficinaBean>();
		try {
			StringBuilder query = new StringBuilder();
			query.append("Select * from encargado_oficina");
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			System.out
					.println("dao.oficinas.getENCARGADOS.Ejecutado----------> "
							+ query.toString());

			while (rs.next()) {
				encargado_oficinaBean encargado = new encargado_oficinaBean();
				encargado.setId_encargado(rs.getInt(1));
				encargado.setId_oficina(rs.getInt(2));
				encargado.setNombre(rs.getString(3));
				encargado.setDemarcacion(rs.getString(4));
				encargado.setHrs_atencion(rs.getString(5));
				encargado.setEmail(rs.getString(6));
				encargado.setTelefono(rs.getInt(7));
				cat_encargados.add(encargado);
			}
			System.out.println("dao.oficinas.getENCARGADOS----------> Cargado");
		} catch (Exception e) {
			System.out.println("oficinasDao...Error..." + e.getMessage());
		} finally {
			close(conn);
			close(ps);
			close(rs);
		}
		return cat_encargados;
	}

	public int nextId() {
		int id = 0;
		try {
			StringBuilder query = new StringBuilder();
			query.append("Select id_oficina from oficina");
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			System.out.println("dao.oficinas.nextId.Ejecutado----------> "
					+ query.toString());

			while (rs.next()) {
				if (id < rs.getInt(1)) {
					id = rs.getInt(1);
				}
			}
			System.out.println("dao.oficinas.nextId----------> Cargado");
		} catch (Exception e) {
			System.out.println("oficinasDao...Error..." + e.getMessage());
		} finally {
			close(conn);
			close(ps);
			close(rs);
		}
		return id + 1;
	}

	public void insertOFICINA(oficinaBean bean) throws Exception {
		try {
			StringBuilder query = new StringBuilder();
			conn = this.getConnectionMYSQL();

			query.append("INSERT INTO oficina ")
					.append("(id_oficina,nombre,email,direccion,horarios) ")
					.append("values (").append(bean.getId_oficina())
					.append(",'").append(bean.getNombre()).append("','")
					.append(bean.getEmail()).append("','")
					.append(bean.getDireccion()).append("','")
					.append(bean.getHorarios()).append("');");

			st = conn.createStatement();
			st.executeUpdate(query.toString());
			System.out
					.println("dao.oficinas.insertOFICINA.Ejecutado----------> "
							+ query.toString());
			System.out
					.println("dao.oficinas.insertOFICINA----------> insertado");

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		} finally {
			close(conn);
			close(st);
		}
	}

	public void deleteOFICINA(oficinaBean bean) throws Exception {
		try {
			StringBuilder query = new StringBuilder();
			conn = this.getConnectionMYSQL();

			query.append("DELETE FROM oficina where id_oficina=").append(
					bean.getId_oficina());

			st = conn.createStatement();
			st.executeUpdate(query.toString());
			System.out
					.println("dao.oficinas.deleteOFICINA.Ejecutado----------> "
							+ query.toString());
			System.out
					.println("dao.oficinas.deleteOFICINA----------> eliminado");

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		} finally {
			close(conn);
			close(st);
		}
	}

	public void updateOFICINA(oficinaBean bean) throws Exception {
		try {
			StringBuilder query = new StringBuilder();
			conn = this.getConnectionMYSQL();

			query.append("UPDATE oficina SET ").append("nombre='")
					.append(bean.getNombre()).append("',email='")
					.append(bean.getEmail()).append("',direccion='")
					.append(bean.getDireccion()).append("',horarios='")
					.append(bean.getHorarios()).append("' where id_oficina=")
					.append(bean.getId_oficina()).append(";");

			st = conn.createStatement();
			st.executeUpdate(query.toString());
			System.out
					.println("dao.oficinas.updateOFICINA.Ejecutado----------> "
							+ query.toString());
			System.out
					.println("dao.oficinas.updateOFICINA----------> actualizado");

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		} finally {
			close(conn);
			close(st);
		}
	}
}
